# C'est en quelque sorte le _main_ du programme.
# Le _z_ au début du nom permettant de la placer tout en bas de la 
# concaténation effectuée par le compilateur CoffeeScript.

# Ce fichier se décompose en plusieurs sections :
#
# * [Gestion de l'aspect esthétique de la page](#section-1)
# * [Gestion du jeu](#section-7)


# ## Gestion de l'aspect esthétique de la page.
#  1. [whoIsCurrent](#section-4).
#  2. [foldAll](#section-5).
#  3. [Binding du comportement aux onglets](#section-6).

# * Liste des sections de la page.
# * ID de la section actuellement affichée.
sections = []
current = ''

# ### whoIsCurrent
# 
# Permet de déterminer quelle est la section actuelle.
#
whoIsCurrent = ->
	$('nav a').each ->
		target = $(this).attr 'href'
		if $(this).hasClass('current')
			current = target
	true

# ### foldAll
# 
# Détermine quelle est la section courante, replie toutes les sections et
# déplie l'actuelle.
foldAll = ->
	whoIsCurrent()
	$(section).slideUp(300) for section in sections when section isnt current
	$(current).slideDown(300)
	true

# ### Binding du comportement aux onglets.
# On récupère la cible de l'onglet dans son _href_.
# Si c'est un lien vers une section de la page…
# On l'ajoute à la liste des sections…
# Et on attache à cet onglet le comportement, à savoir:
$('nav a').each ->
	target = $(this).attr 'href'
	if target.indexOf('#') is 0
		sections.push target
		$(this).bind {
# #### Pour le clic :
# 1. On bloque le comportement par défaut.
# 2. On enlève la classe _current_ à tous les onglets.
# 3. On ajoute à l'onglet courant la classe _current_
# 4. On lance [foldAll](#section-5)
			click : (e) ->
				e.preventDefault()
				$('nav a').removeClass 'current'
				$(this).addClass 'current'
				foldAll()
		}

# Par défaut on lance [foldAll](#section-5) (pour replier tous les onglets
# qui n'ont pas la classe _current_).
foldAll()

# ### Gestion de la prise de focus du jeu
# un peu à la manière _Adobe Flash_
focusTaken = false

$('#main').bind {
# #### Pour le clic :
# 1. _focusTaken_ à _true_ (pour exploitation dans le jeu).
# 2. On ajoute la classe _focused_ au canvas.
	click : (e) ->
		focusTaken = true
		$(this).children('#screen').addClass 'focused'
# #### Pour la sortie de la souris du canvas :
# 1. _focusTaken_ à _false_ (pour exploitation dans le jeu).
# 2. On enlève la classe _focused_ au canvas.
	mouseout : (e) ->
		focusTaken = false
		$(this).children('#screen').removeClass 'focused'
}

$(document).bind {
	keypress : (e) ->
		if focusTaken
			e.preventDefault()
			console.log e.which
			false
	keydown : (e) ->
		if focusTaken
			e.preventDefault()
			console.log e.which
			false
}

# 
# ## Gestion du jeu
canva = new Canvas2D 'screen'
canva.rectangle 250, 250, 250, 30, '#f00', '#0f0', 3
